Feat/interactive cherry pick#279
Draft
quakj wants to merge 28 commits into
Draft
Conversation
# Conflicts: # crates/gitcomet-state/src/store/reducer/actions_emit_effects.rs # crates/gitcomet-ui-gpui/src/view/command_palette.rs # crates/gitcomet-ui-gpui/src/view/panels/popover.rs # crates/gitcomet-ui-gpui/src/view/panels/popover/context_menu.rs # crates/gitcomet-ui-gpui/src/view/panels/popover/fingerprint.rs # crates/gitcomet-ui-gpui/src/view/panes/main.rs # crates/gitcomet-ui-gpui/src/view/panes/main/core_impl.rs
…icker width dedup, icon asset registry
# Conflicts: # crates/gitcomet-ui-gpui/src/view/panes/main/interactive_rebase.rs
First step of porting the interactive rebase list to a variable-height virtualized gpui::list (needed for autosquash's multi-line rows). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replaces the ScrollHandle scroll-list (which rendered every row) with a variable-height virtualized gpui::list, so the autosquash multi-line rows render correctly while only visible rows are built per frame. - IRebaseViewState.scroll -> Option<ListState> (lazy init) + list_sig; the ListState is remeasured on same-count content changes and reset on count changes, keyed on a content hash of entry actions/order + folded groups. - Extract per-row builder into render_irebase_row (list render callback), keeping the squash header, is_dropped dim, autosquash-eligible highlight, action dropdown, and up/down. - Drag: cursor-following IRebaseDragPreview (replaces the empty drag image); hit-testing via ListState::bounds_for_item (variable heights); auto-scroll via scroll_by; an absolute per-row insertion line as the drop indicator (no height change -> no remeasure churn); source-dim + reorder fades. - Strip the old gap-ghost drag machinery and measured_drag_row_height. - Add ScrollbarDriver for ListState (earlier commit) drives the scrollbar. Autosquash unit tests pass; full workspace builds clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Squashing commits that don't include HEAD runs an automated todo-list rebase with no editor window, but it reused RepoCommandKind::InteractiveRebase and so reported as 'Interactive rebase onto X: Completed'. Thread an `interactive` flag (true only for the user-opened editor) through the effect + command kind so the automated case reports as a plain 'Rebase'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pressing Continue after resolving a rebase conflict left the UI stuck on a spinner: git rebase --continue applies a few commits, stops at the *next* conflict, and exits non-zero, which run_git_with_output treated as a hard error. On that Err path the reducer never resets the diff/conflict state, so the already-open conflict resolver kept showing stale content and never reloaded. A rebase step (rebase -i / --continue) that leaves the rebase still in progress has merely paused at the next conflict. Add run_rebase_step_output, which returns Ok (with captured output) when the command exits non-zero but the rebase is still in progress, and only Err for a genuine failure (no rebase in progress). The reducer's Ok path then clears the stale resolver, reloads status, and surfaces the new conflict. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…rget Matches SmartGit/git's autosquash convention: a commit whose subject is `fixup! foo` (or squash!/amend!) now groups with `foo` instead of requiring an exact subject match. The group key strips those prefixes, and the surviving commit prefers an unprefixed sibling so the fixup's message doesn't become the kept message (e.g. under To Top, which would otherwise keep the newest). Closes the gap vs SmartGit's Auto-Squash button, which already treats `foo` and `fixup! foo` as equally named. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add cherry-pick support built on the gix backend and reuse the
interactive-rebase commit editor by generalizing it behind a new
ICommitEditorMode { Rebase, CherryPick } enum. Squash/autosquash
controls are gated to Rebase mode so existing rebase behavior is
unchanged.
- gix backend: cherry_pick history support + integration tests
- new cherry-pick confirm popover and commit context-menu entry
- Msg/Effect/RepoCommandKind cherry-pick variants with reducer/effects wiring
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.